const { Sequelize } = require('sequelize');
const { getDateTime } = require('./date');

const host = 'localhost'; // 数据库主机地址
const port = 3306; // 默认 MySQL 端口
const database = 'database'; // 数据库名称
const username = 'username'; // 数据库用户名
const password = 'password'; // 数据库密码

const dbConfig = global.__config.datasource || {};

const sequelize = new Sequelize({
  dialect: 'mysql',
  host: dbConfig.host || host,
  port: dbConfig.port || port,
  database: dbConfig.database || database,
  username: dbConfig.username || username,
  password: dbConfig.password || password,
  logging: false, // 禁用 Sequelize 自身日志
  timezone: '+08:00', // 设置时区
  define: {
    freezeTableName: true, // 禁用表名复数
    underscored: true, // 使用下划线分隔列名
  },
  dialectOptions: {
    connectTimeout: 60000, // 连接超时时间
    dateStrings: true, // 新增：强制返回字符串类型的日期时间
    typeCast: function (field, next) {
      // 只针对 DATETIME 类型
      if (field.type === 'DATETIME') {
        return field.string();
      }
      return next();
    },
  },
  pool: {
    max: 5, // 连接池最大连接数
    min: 0, // 连接池最小连接数
    acquire: 30000, // 获取连接最大等待时间
    idle: 10000, // 连接最大空闲时间
  },
});

// 测试连接（现有代码保持不变）
sequelize
  .authenticate()
  .then(() => console.log(getDateTime(), ': 数据库连接成功'))
  .catch((err) => console.log(getDateTime(), ': 数据库连接失败:', err));

module.exports = sequelize;
